 /*******************************************************************************
  * Copyright (c) 2000, 2005 IBM Corporation and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v10.html
  *
  * Contributors:
  * IBM Corporation - initial API and implementation
  *******************************************************************************/
 package org.eclipse.ui;

 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.viewers.ISelectionProvider;

 /**
  * The primary interface between an editor part and the workbench.
  * <p>
  * The workbench exposes its implemention of editor part sites via this
  * interface, which is not intended to be implemented or extended by clients.
  * </p>
  */
 public interface IEditorSite extends IWorkbenchPartSite {

     /**
      * Returns the action bar contributor for this editor.
      * <p>
      * An action contributor is responsable for the creation of actions.
      * By design, this contributor is used for one or more editors of the same type.
      * Thus, the contributor returned by this method is not owned completely
      * by the editor - it is shared.
      * </p>
      *
      * @return the editor action bar contributor, or <code>null</code> if none exists
      */
     public IEditorActionBarContributor getActionBarContributor();

     /**
      * Returns the action bars for this part site. Editors of the same type (and
      * in the same window) share the same action bars. Contributions to the
      * action bars are done by the <code>IEditorActionBarContributor</code>.
      *
      * @return the action bars
      * @since 2.1
      */
     public IActionBars getActionBars();

     /**
      * <p>
      * Registers a pop-up menu with the default id for extension. The default id
      * is defined as the part id.
      * </p>
      * <p>
      * By default, context menus include object contributions based on the
      * editor input for the current editor. It is possible to override this
      * behaviour by calling this method with <code>includeEditorInput</code>
      * as <code>false</code>. This might be desirable for editors that
      * present a localized view of an editor input (e.g., a node in a model
      * editor).
      * </p>
      * <p>
      * For a detailed description of context menu registration see
      * {@link IWorkbenchPartSite#registerContextMenu(MenuManager, ISelectionProvider)}
      * </p>
      *
      * @param menuManager
      * the menu manager; must not be <code>null</code>.
      * @param selectionProvider
      * the selection provider; must not be <code>null</code>.
      * @param includeEditorInput
      * Whether the editor input should be included when adding object
      * contributions to this context menu.
      * @see IWorkbenchPartSite#registerContextMenu(MenuManager,
      * ISelectionProvider)
      * @since 3.1
      */
     public void registerContextMenu(MenuManager menuManager,
             ISelectionProvider selectionProvider, boolean includeEditorInput);

     /**
      * <p>
      * Registers a pop-up menu with a particular id for extension. This method
      * should only be called if the target part has more than one context menu
      * to register.
      * </p>
      * <p>
      * By default, context menus include object contributions based on the
      * editor input for the current editor. It is possible to override this
      * behaviour by calling this method with <code>includeEditorInput</code>
      * as <code>false</code>. This might be desirable for editors that
      * present a localized view of an editor input (e.g., a node in a model
      * editor).
      * </p>
      * <p>
      * For a detailed description of context menu registration see
      * {@link IWorkbenchPartSite#registerContextMenu(MenuManager, ISelectionProvider)}
      * </p>
      *
      * @param menuId
      * the menu id; must not be <code>null</code>.
      * @param menuManager
      * the menu manager; must not be <code>null</code>.
      * @param selectionProvider
      * the selection provider; must not be <code>null</code>.
      * @param includeEditorInput
      * Whether the editor input should be included when adding object
      * contributions to this context menu.
      * @see IWorkbenchPartSite#registerContextMenu(MenuManager,
      * ISelectionProvider)
      * @since 3.1
      */
     public void registerContextMenu(String menuId, MenuManager menuManager,
             ISelectionProvider selectionProvider, boolean includeEditorInput);
 }

